package tpv;

/**
 *
 * @author alex952
 */
public class Caja
{
    private Venta venta;
    private DeshacerLinVenta dlv;
    private CancelarVenta cv;

    public Caja()
    {
	venta = new Venta();
	dlv = new DeshacerLinVenta(venta);
	cv = new CancelarVenta(this);
    }

    void setVenta(Venta venta)
    {
	this.venta = venta;
	this.dlv = new DeshacerLinVenta(venta);
    }

    /**
     * Devuelve la venta que se está gestionando actualmente.
     * @return Venta que se está gestionando en la caja
     */
    public Venta getVentaActual()
    {
	return venta;
    }

    /**
     * Deshace la ultima linea de venta añadida en la venta actual.
     */
    public void deshacerLinea()
    {
	dlv.ejecutar();
    }

    /**
     * Elimina la ultima venta añadida en la caja
     */
    public void deshacerVenta()
    {
	cv.ejecutar();
    }

    /**
     * Finaliza la venta que se está gestionando y la borra de la lista de ventas
     * @return Venta finalizafa
     */
    public Venta cerrarVenta()
    {
	return venta.cerrarVenta();
    }

    /**
     * Añade una nueva linea de venta a la venta acutal
     * @param linea Linea que se va a añadir
     */
    public void anyadirLinVenta(LinVenta linea)
    {
	venta.anyadirLinVenta(linea);
    }

    /**
     * Añade una nueva venta a la caja
     * @param venta Venta que se va a añadir
     */
    public void anyadirVenta(Venta venta)
    {
	cv.pushVenta(this.venta);
	this.setVenta(venta);
    }

}
